//构造方法
public class Student {
    public String name;
    public int age;

    /**
     * 当一个没有构造方法都没有时，
     * 编译器会自动提供一个不带参数的构造方法
     * 一旦有了自己定义的，就不再自动提供
     * --》如果只写了有参数的构造方法，而在实例化对象时没有提供参数
     * ---编译器会报错
     */

    //构造方法可以被重载
    /*public Student(){
        System.out.println("这是不带参数的构造方法");
    }*/
    public Student() {
        this("zhangsan",7);//直接走到有参数那
        //必须是构造方法里面，并且必须是第一行
        System.out.println("调用本类当中其他的构造方法");
    }
    Student(String name, int age){
        //this();不能循环调用
        System.out.println("这是带参数的构造方法");
        this.name = name;
        this.age = age;
    }
    public static void main(String[] args) {
        Student s = new Student();//调用一次就会产生新的对象
        //当实例化对象时--会自动调用Student构造对象(无参数)
        Student s1 = new Student("风息",2);
        //只是有参数的，在实例化对象s1时，会自动调用有参数的构造方法
        System.out.println(s1.name + " " + s1.age );
        System.out.println(s.name + " " + s.age );
    }
}
